﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Collections;
using Model;

namespace Controller
{
    public class cntrRelato
    {
        public cntrRelato()
        {
        }

        Relato objRelato;

        #region Salvar

        public Boolean Save(DS_Lawyer.RelatoRow pRelato)
        {
            Boolean flagReturn = false;
            if (pRelato.idRelato == string.Empty)
            {
                this.objRelato = new Relato();
                this.objRelato.IdRelato = System.Guid.NewGuid().ToString();
                this.objRelato.Descricao = pRelato.descricao;
                this.objRelato.DataCadastro = System.DateTime.Now;
                this.objRelato.Cliente = Cliente.RetriveObject(pRelato.idCliente);
                this.objRelato.Assunto = pRelato.assunto;
                
                try
                {
                    flagReturn = this.objRelato.Persist();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            else
            {
                this.objRelato = Relato.RetriveObject(pRelato.idRelato);
                this.objRelato.Descricao = pRelato.descricao;
                this.objRelato.Cliente = Cliente.RetriveObject(pRelato.idRelato);
                this.objRelato.Assunto = pRelato.assunto;
                try
                {
                    flagReturn = this.objRelato.Update();
                }
                catch (Exception ex)
                {

                    throw ex;
                }
            }
            return flagReturn;
        }
        #endregion

        public DS_Lawyer.RelatoRow Select(string pID)
        {
            DS_Lawyer.RelatoDataTable dtRelato = new DS_Lawyer.RelatoDataTable();
            DS_Lawyer.RelatoRow rowRelato = dtRelato.NewRelatoRow();

            try
            {
                this.objRelato = Relato.RetriveObject(pID);
                rowRelato.idCliente = this.objRelato.Cliente.IdCliente;
                rowRelato.idRelato = pID;
                rowRelato.descricao = this.objRelato.Descricao;
                rowRelato.dataCadastro = this.objRelato.DataCadastro;
                rowRelato.assunto = this.objRelato.Assunto;

            }
            catch (Exception ex)
            {
                
                throw ex;
            }

            return rowRelato;
        }
        

        #region Select
        public static DS_Lawyer.RelatoDataTable Select()
        {
            DS_Lawyer.RelatoDataTable dtRelato = new DS_Lawyer.RelatoDataTable();
            try
            {
                IList listRelato = Relato.RetriveObjects();
                for (int i = 0; i < listRelato.Count; i++)
                {
                    Relato objRelato = (Relato)listRelato[i];
                    dtRelato.AddRelatoRow(objRelato.IdRelato, objRelato.Descricao,
                        objRelato.DataCadastro, objRelato.Cliente.IdCliente, objRelato.Assunto);
                }
            }
            catch (Exception ex)
            {
                //Tratar mensagem de erro aqui!
                throw ex;

            }
            return dtRelato;
        }
        #endregion

        #region SelecByCliente
        public static DS_Lawyer.RelatoDataTable SelectByCliente(string pIdCliente)
        {
            DS_Lawyer.RelatoDataTable dtRelato = new DS_Lawyer.RelatoDataTable();
            try
            {
                IList listRelato = Relato.RetriveObjects(Cliente.RetriveObject(pIdCliente));
                for (int i = 0; i < listRelato.Count; i++)
                {
                    Relato objRelato = (Relato)listRelato[i];
                    dtRelato.AddRelatoRow(objRelato.IdRelato, objRelato.Descricao,
                        objRelato.DataCadastro, objRelato.Cliente.IdCliente, objRelato.Assunto);
                }
            }
            catch (Exception ex)
            {
                //Tratar mensagem de erro aqui!
                throw ex;

            }
            return dtRelato;
        }
        #endregion
    }
}
